package com.atguigu01.create.thread.exer1;

/**
 * ClassName: PersonTest
 * Description:
 *创建两个分线程，其中一个线程遍历100以内的偶数，
 * 另一个线程遍历100以内的奇数。
 * @Author liu
 * @Create 2024/11/14 23:04
 * @Version 1.0
 */

//继承Thread类
// ① 创建一个继承于Thread类的子类
    class EvenNumberPrint extends Thread{//偶数
    //② 重写Thread类的run() --->将此线程要执行的操作，声明在此方法体中

    @Override
    public void run() {
        for (int i = 1; i <= 100; i++) {
            if(i % 2 == 0){
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
        }
    }
}
class OddNumberPrint extends Thread{//奇数
    //② 重写Thread类的run() --->将此线程要执行的操作，声明在此方法体中

    @Override
    public void run() {
        for (int i = 1; i <= 100; i++) {
            if(i % 2 != 0){
                System.out.println(Thread.currentThread().getName() + "--->" + i);
            }
        }
    }
}


public class PrintNumberTest {
    public static void main(String[] args) {
        //方式1：
        //③ 创建当前Thread的子类的对象
        EvenNumberPrint p1 = new EvenNumberPrint();
        //④ 通过对象调用start(): 1.启动线程 2.调用当前线程的run()
        p1.start();

        //换一个Thread类，要重新创建对象
        OddNumberPrint p2 = new OddNumberPrint();
        p2.start();

        //方式2：创建Thread类的匿名子类的匿名对象。
        new Thread(){
            public void run() {
                for (int i = 1; i <= 100; i++) {
                    if(i % 2 != 0){
                        System.out.println(Thread.currentThread().getName() + "--->" + i);
                    }
                }
            }

        }.start();

        //方式3：使用实现Runnable接口的方式：（
        // 提供了Runnable接口匿名实现类的匿名对象
        new Thread(new Runnable(){
            public void run() {
                for (int i = 1; i <= 100; i++) {
                    if(i % 2 != 0){
                        System.out.println(Thread.currentThread().getName() + "--->" + i);
                    }
                }
            }

        }).start();

    }

}
